# @Time : 2024-10-25 14:39
# @Author : Fioman 
# @Phone : 13149920693
def add(a, b):
    a += b
    return a


# region 1. 不可变类型作为参数,以及可变类型作为参数
a, b = 1, 2
c = add(a, b)
print(c)
c = add(a, b)
print(c)  # 两次结果都是3

a, b = (1, 2), (3, 4)
c = add(a, b)
print(c)
c = add(a, b)
print(c)  # 两次都是 (1,2,3,4)

a, b = [1, 2], [3, 4]
c = add(a, b)  # 这里会修改a的值,所以使用可变类型作为参数的时候要注意
print(c)  # [1,2,3,4]
c = add(a, b)  # [1,2,3,4,3,4]
print(c)

# endregion

# region 2. 关于传入一个空列表的经典错误陷阱
lst = []


def add_val(a, defalut=[]):
    global lst
    print(defalut)
    defalut.append(a)
    lst.extend(defalut)
    print(lst)


add_val(1)  # [], [1]
add_val(2)  # [1] ,[1,1,2]
add_val(3)  # [1,2] , [1,1,2,1,2,3]

lst2 = []


def add_val(a, defalut=None):
    global lst2
    print(defalut)
    if defalut is None:
        lst2.append(a)
    print(lst2)


add_val(1)
add_val(2)
add_val(3)

# endregion
